﻿Imports System.Resources
Imports System.Threading
Imports BLL
Imports Biz

Public Class ctrlListaDepartamentos

    Private _llamador As frmMainMetro
    Private _ctrlNuevoDepartamento As ctrlNuevoDepartamentos
    Private _RM As ResourceManager


    Public Sub SetIdioma()

        _RM = New ResourceManager("UI.Idiomas", System.Reflection.Assembly.GetExecutingAssembly)

        btnNuevo.Text = _RM.GetString("btnNuevo")
        btnEditar.Text = _RM.GetString("btnEditar")
        btnEliminar.Text = _RM.GetString("btnEliminar")

        HelpProviderForm.SetHelpString(advTreeDepartamentos, "Enter your UserName")

        SetAyudaContextual()

    End Sub

    Public Property Llamador() As frmMainMetro
        Get
            Return _llamador
        End Get
        Set(value As frmMainMetro)
            _llamador = value
        End Set
    End Property

    Public Sub CargarGrilla()
        Dim oDepartamento As cDepartamento
        Dim colObjetos As Collection
        Dim oNode As DevComponents.AdvTree.Node


        advTreeDepartamentos.BeginUpdate()

        advTreeDepartamentos.Nodes.Clear()

        Try
            colObjetos = GestorDepartamento.Instance.Consultar

            If Not colObjetos Is Nothing Then

                For Each oDepartamento In colObjetos

                    oNode = New DevComponents.AdvTree.Node

                    oNode.Tag = oDepartamento.Dep_Codigo
                    oNode.Text = oDepartamento.Dep_Codigo
                    oNode.Cells.Add(New DevComponents.AdvTree.Cell(oDepartamento.Dep_Descrip))

                    advTreeDepartamentos.Nodes.Add(oNode)

                Next
            End If

        Catch ex As Excepciones.DepartamentoFalloConsultar
            Main.ManejarExcepcion(ex)
        Catch ex As Exception
            Main.ManejarExcepcion(ex)
        End Try

        advTreeDepartamentos.EndUpdate()

        advTreeDepartamentos.Refresh()

    End Sub

    Private Sub btnNuevo_Click(sender As Object, e As EventArgs) Handles btnNuevo.Click

        Try

            If Not GestorUsuario.Instance.TienePermiso(AppCurrentState.UsuarioLogueado, New cPatente(Utils.Enumeradores.Patentes.GestionDepartamentos)) Then
                frmMainMetro.StatusBarLabel.Text = "El usuario no posee permisos suficientes para realizar esta operación"
                Exit Sub
            End If

            _llamador._ctrlNuevoDepartamento.MostrarParaAlta()
            _llamador.ShowModalPanel(_llamador._ctrlNuevoDepartamento, DevComponents.DotNetBar.Controls.eSlideSide.Left)

        Catch ex As Excepciones.UsuarioFalloConsultaTieneAcceso
            Main.ManejarExcepcion(ex)
        Catch ex As Exception
            Main.ManejarExcepcion(ex)
        End Try

    End Sub



    Public Sub New()

        ' This call is required by the designer.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.
        SetIdioma()
    End Sub

    Private Sub btnEliminar_Click(sender As Object, e As EventArgs) Handles btnEliminar.Click
        Dim oAux As cDepartamento = New cDepartamento

        Try

            If Not GestorUsuario.Instance.TienePermiso(AppCurrentState.UsuarioLogueado, New cPatente(Utils.Enumeradores.Patentes.GestionDepartamentos)) Then
                frmMainMetro.StatusBarLabel.Text = "El usuario no posee permisos suficientes para realizar esta operación"
                Exit Sub
            End If

            If Not advTreeDepartamentos.SelectedNode Is Nothing Then
                If MessageBox.Show("Confirma la eliminación del registro?", "Confirmar acción", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) = DialogResult.OK Then
                    oAux.Dep_Codigo = Utils.Convert.ToInt16(advTreeDepartamentos.SelectedNode.Tag)

                    Try
                        GestorDepartamento.Instance.Eliminar(oAux)
                        GestorBitacora.Instance.Loguear(New cBitacora_Usuario(AppCurrentState.UsuarioLogueado.Usu_Legajo, Utils.Enumeradores.Bitacora.DepartamentoBaja))

                        _llamador.RefrescarGrillas()


                    Catch ex As Excepciones.DepartamentoFalloBaja
                        Main.ManejarExcepcion(ex)
                    Catch ex As Exception
                        Main.ManejarExcepcion(ex)
                    End Try
                End If
            End If

        Catch ex As Excepciones.UsuarioFalloConsultaTieneAcceso
            Main.ManejarExcepcion(ex)
        Catch ex As Exception
            Main.ManejarExcepcion(ex)
        End Try

    End Sub

    Private Sub btnEditar_Click(sender As Object, e As EventArgs) Handles btnEditar.Click
        Dim oAux As cDepartamento

        Try

            If Not GestorUsuario.Instance.TienePermiso(AppCurrentState.UsuarioLogueado, New cPatente(Utils.Enumeradores.Patentes.GestionDepartamentos)) Then
                frmMainMetro.StatusBarLabel.Text = "El usuario no posee permisos suficientes para realizar esta operación"
                Exit Sub
            End If

            If Not advTreeDepartamentos.SelectedNode Is Nothing Then
                Try
                    oAux = New cDepartamento
                    oAux.Dep_Codigo = advTreeDepartamentos.SelectedNode.Tag
                    oAux = GestorDepartamento.Instance.Buscar(oAux)

                    _llamador._ctrlNuevoDepartamento.MostrarParaEdicion(oAux)
                    _llamador.ShowModalPanel(_llamador._ctrlNuevoDepartamento, DevComponents.DotNetBar.Controls.eSlideSide.Left)

                Catch ex As Excepciones.DepartamentoFalloBuscar
                    Main.ManejarExcepcion(ex)
                Catch ex As Exception
                    Main.ManejarExcepcion(ex)
                End Try
            End If

        Catch ex As Excepciones.UsuarioFalloConsultaTieneAcceso
            Main.ManejarExcepcion(ex)
        Catch ex As Exception
            Main.ManejarExcepcion(ex)
        End Try

    End Sub

    Public Sub SetAyudaContextual()
        _RM = New ResourceManager("UI.AyudaContextual", System.Reflection.Assembly.GetExecutingAssembly)

        HelpProviderForm.SetHelpString(advTreeDepartamentos, "Lista de departamentos de la compañía")

    End Sub

    Public Sub Inicializar()

        CargarGrilla()
        SetAyudaContextual()

    End Sub

End Class
